[C - Socket] UDP SERVER

Publicado por Enzo de Brito Ferber 10/03/2006

[ Hits: 10.444 ]

Homepage: http://www.maximasonorizacao.com.br

Download server.c




Este script testei na minha
propria máquina em terminas
diferentes, mas creio eu que
funcionará em uma rede local.

Como fazer funcionar:
Compile o script:
cc -o server server.c

Abra um terminal (xterm)
Execute o servidor.

Abra outro terminal (xterm)
Execute o cliente

P.S.: O cliente está em outro
link

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>

#define PORT 3456
#define MAX_CONNECTS_TRY 10

int main(int argc, char *argv[]){
   
   int fd1, fd2;
   int num_b;
   int bind_return;
   int listen_return;
   int sin_size; //para passar endereco para funcao accept()
   int msg_size;
   
   char msg[100];
   char hostname[30];
   
   struct sockaddr_in client;
   struct sockaddr_in host;
   
   gethostname(hostname, 30);
   
   printf("Seu HOSTNAME: %s\n\n", hostname);
   
   fd1 = socket(AF_INET, SOCK_DGRAM, 0);
   
   if(fd1 == -1){
      perror("socket");
      exit(1);
   }
   
   client.sin_family = AF_INET;
   client.sin_port = htons(PORT);
   client.sin_addr.s_addr = INADDR_ANY; //poe o endeco do meu computador automaticamente
   
   bind_return = bind(fd1, (struct sockaddr *)&client, sizeof(struct sockaddr));
   
   if(bind_return == -1){
      perror("bind");
      exit(1);
   }
   while(strcmp("exit", msg) != 0){
   memset(msg, 0x0, 100);
   sin_size = sizeof(host);
   msg_size = recvfrom(fd1, msg, 100, 0, (struct sockaddr *)&host, &sin_size);
   printf("Mensagem de:%s: %s\n", inet_ntoa(host.sin_addr), msg);
}
} 

    

Scripts recomendados

Simples servidor http com concorrência feito em C

Cliente em C via UDP

Programa em C para monitorar IPs e portas ativas

Ruby

Robo HTTP usando socket e código multiplataforma


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts